12682
6631
Fechadas. Esta questão precisa de detalhes ou clareza. Atualmente não está aceitando respostas.
Quer melhorar esta questão? Adicione detalhes e esclareça o problema editando esta postagem.
Fechado há 1 ano.
Melhore esta questão
Estou fazendo alguns desafios de código e quero obter os 3 primeiros valores do meu array especificando o índice inicial e obtendo apenas os primeiros (3 ou pode ter qualquer comprimento) valores do índice inicial.
Tentei este código e está funcionando, mas a estrutura do código é muito longa, então como posso torná-lo mais curto para que seja fácil de entender.
int n = 10;
assinatura dupla = nova dupla [] {1, 1, 1};
duplo [] ret = novo duplo [n];
soma dupla = 0;
ret [0] = assinatura [0];
ret [1] = assinatura [1];
ret [2] = assinatura [2];
int x, i;
para (i = 0; i 
                                
Usando o LINQ, você pode tentar algo assim:
valores var = array.Skip (índice)
.Ocupado)
.ToArray ();
Onde índice é o índice do primeiro item eno número de itens que você deseja selecionar.
Por exemplo. https://dotnetfiddle.net/Pk1rwY
Como uma nota rodapé. Usar LINQ não significa que seu código seria mais rápido. Seria mais compacto / legível etc. Para avaliar o quão performant é o seu código, você tem que usar algo como BenchmarkDotNet.
|
Sem solução Linq:
private static T [] Extrair  (fonte T [], int do índice, comprimento interno) {
if (null == source)
lance novo ArgumentNullException (nameof (source));
else if (fromIndex <0)
lance novo ArgumentOutOfRangeException (nameof (fromIndex),
"Do índice deve ser não negativo");
else if (comprimento <0)
lance novo ArgumentOutOfRangeException (nameof (length),
"O comprimento deve ser não negativo");
if (fromIndex> = source.Length || length == 0)
retornar novo T [0];
T [] resultado = novo T [Math.Min (length, source.Length - fromIndex)];
Array.Copy (fonte, fromIndex, result, 0, result.Length);
resultado de retorno;
}
Então
dupla [] assinatura = novo duplo [] {0, 1, 2, 3, 4, 5};
double [] ret = Extrair (assinatura, 3, 2);
Console.Write (string.Join (",", ret));
Resultado:
3, 4
|
A partir de sua dúvida, você precisa aproveitar as vantagens dos operadores .Take e .Skip.
var result = array.Skip (StartingIndex) .Take (numberOfElements);
Portanto, pelo seu código, parece que você está tentando fazer algo um pouco diferente, ou seja, somar elementos. O operador .Sum pode ser útil aqui.
|
Não é a resposta que você está procurando? Navegue por outras questões com a tag c # arrays linq ou faça sua própria pergunta.